<?php
namespace app\modules\frontend\models;
use common\component\tool\Tool;
use app\models\Basic;

use Yii;

class ContentCategory extends Basic
{  
    public static function tableName()
    {
        return '{{%content_category}}';
    }


    /*
    取出树形分类
    $model      带有where参数的搜索模型对象
    $flag       ele的时候，取setEleTree()方法
    */
    public static function getTreeList($model, $flag = '', $parentid = 0)
    {
        $contentCategoryList = $model
        ->select(['catid', 'name', 'parentid', 'icon', 'preview', 'seo_title', 'seo_describe', 'outside', 'flag', 'content_count', 'preview_count', 'display'])
        ->andWhere('display = 2')
        ->orderBy(['sort' => SORT_ASC])
        ->asArray()->all();
        // P($contentCategoryList);
        if($flag == 'ele'){
            $contentCategoryList = self::setEleTree($contentCategoryList, $parentid);
        }else{
            $contentCategoryList = self::setTree($contentCategoryList, $parentid);
        }
        return $contentCategoryList;
    }
    /*
    递归函数
    返回一个 商品分类 树列表
    $arr        需要处理的数组
    $parentid   父ID
    */
    private static function setTree($arr, $parentid=0)
    {
        static $list = array();
        static $level = 0;//层级
        $level++;

        for($i=0; $i<count($arr); $i++){
            $arr[$i]["level"] = $level;
            $hasTotal = self::getHasNumById($arr, $arr[$i]["catid"]);//此ID下有多少条数据(不包含隐藏的栏目)
            $endTotal = self::getEndNumById($arr, $arr[$i]["catid"]);//此ID下有多少条数据(包含隐藏的栏目)
            if($arr[$i]["parentid"] == $parentid){
                if($hasTotal){//如果下面有子栏目
                    $arr[$i]["has"] = true;
                }else{
                    $arr[$i]["has"] = false;
                }
                if($endTotal){//如果下面有同级栏目
                    $arr[$i]["end"] = true;
                }else{
                    $arr[$i]["end"] = false;
                }
                array_push($list, $arr[$i]);
                self::setTree($arr, $arr[$i]["catid"]);
            }
        }
        $level--;
        return $list;
    }
    /*
    为递归函数服务
    查看父id为 $parentid 的 结果有多少个(不包含隐藏的栏目)
    $arr        匹配的数组
    $parentid   匹配的父ID
    */
    private static function getHasNumById($arr, $parentid)
    {
        $num = 0;
        foreach($arr as $k => $v){
            if(($v["parentid"] == $parentid) && $v["display"]){
                $num++;
            }
        }
        return $num;
    }
    /*
    为递归函数服务
    查看父id为 $parentid 的 结果有多少个(不包含隐藏的栏目)
    $arr        匹配的数组
    $parentid   匹配的父ID
    */
    private static function getEndNumById($arr, $parentid)
    {
        $num = 0;
        foreach($arr as $k => $v){
            if(($v["parentid"] == $parentid)){
                $num++;
            }
        }
        return $num;
    }

    //------------------element TREE(因为目录结构不一样，element TREE子栏目是children包含的)-----------------
    /*
    递归函数
    返回一个 商品分类 树列表
    $list           需要处理的原始数据
    $parentid       父ID
    */
    private static function setEleTree($list, $parentid  = 0)
    {
        $newList = array();
        $j = 0;

        for($i=0; $i<count($list); $i++){
            if($list[$i]["parentid"] == $parentid){
                // switch($list[$i]['flag']){
                //     case 1:
                //         $list[$i]['flag'] = 'hot';
                //         break;
                //     case 2:
                //         $list[$i]['flag'] = 'new';
                //         break;
                //     default:
                //         $list[$i]['flag'] = '';
                // };
                if($list[$i]["display"] == 1){
                    $list[$i]["display"] = false;
                }else{
                    $list[$i]["display"] = true;
                }
                $list[$i]['label'] = array(
                    'name' => $list[$i]['name'],
                    'flag' => $list[$i]['flag'],
                    'content_count' => $list[$i]['content_count']
                );
                unset( $list[$i]['name']);
                array_push($newList, $list[$i]);
                $newList[$j]['children'] = self::setEleTree($list, $list[$i]["catid"]);
                $j++;
            }
        }
        return $newList;
    }
    //------------------element TREE(因为目录结构不一样，element TREE子栏目是children包含的)-----------------

    
}